package com.fowo.api.model.supplier.order.product;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 供应商订单子表 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class SupplierOrderProductImportPo {

  /** 所属供应商订单 */
  @ExcelProperty("所属供应商订单")
  private String parentSupplierOrderSupplierOrder;

  @ExcelIgnore
  @Schema(title = "所属供应商订单")
  private String parentSupplierOrder;

  /** 所属供应商订单 */
  @ExcelProperty("所属供应商订单")
  @Size(max = 50, message = "所属供应商订单长度不能超过50")
  private String supplierOrderId;

  /** 业务标识 */
  @ExcelProperty("业务标识")
  @EnumsString(
    value = { "已变更", "已退货", "已换货" },
    message = "业务标识只能是“已变更”, “已退货”, “已换货”中的一个"
  )
  private String businessIdent;

  /** 产品 */
  @ExcelProperty("*产品")
  @NotBlank(message = "产品不能为空")
  @Size(max = 500, message = "产品长度不能超过500")
  private String productIdName;

  @ExcelIgnore
  @Schema(title = "*产品")
  private String productId;

  /** SKU */
  @ExcelProperty("SKU")
  @Size(max = 50, message = "SKU长度不能超过50")
  private String sku;

  /** 品名 */
  @ExcelProperty("品名")
  @Size(max = 50, message = "品名长度不能超过50")
  private String productName;

  /** 标签 */
  @ExcelProperty("标签")
  @Size(max = 50, message = "标签长度不能超过50")
  private String tag;

  /** 型号 */
  @ExcelProperty("型号")
  @Size(max = 50, message = "型号长度不能超过50")
  private String model;

  /** 采购数量 */
  @ExcelProperty("采购数量")
  @IntegerString(message = "采购数量数值格式不正确", label = "采购数量")
  private String applicationNum;

  /** 含税单价 */
  @ExcelProperty("含税单价")
  @DecimalString(message = "含税单价小数格式不正确", label = "含税单价")
  private String taxPrice;

  /** 单价 */
  @ExcelProperty("单价")
  @DecimalString(message = "单价小数格式不正确", label = "单价")
  private String unitPrice;

  /** 成本价格 */
  @ExcelProperty("成本价格")
  @DecimalString(message = "成本价格小数格式不正确", label = "成本价格")
  private String costPrice;

  /** 主材料单价 */
  @ExcelProperty("主材料单价")
  @DecimalString(message = "主材料单价小数格式不正确", label = "主材料单价")
  private String mainUnitPrice;

  /** 主材料克重 */
  @ExcelProperty("主材料克重")
  @DecimalString(message = "主材料克重小数格式不正确", label = "主材料克重")
  private String gramWeight;

  /** 工费 */
  @ExcelProperty("工费")
  @DecimalString(message = "工费小数格式不正确", label = "工费")
  private String laborCosts;

  /** 辅料 */
  @ExcelProperty("辅料")
  @DecimalString(message = "辅料小数格式不正确", label = "辅料")
  private String accessoriesPrice;

  /** 税率 */
  @ExcelProperty("税率")
  @DecimalString(message = "税率小数格式不正确", label = "税率")
  private String taxRate;

  /** 税额 */
  @ExcelProperty("税额")
  @DecimalString(message = "税额小数格式不正确", label = "税额")
  private String taxAmount;

  /** 金额 */
  @ExcelProperty("金额")
  @DecimalString(message = "金额小数格式不正确", label = "金额")
  private String totalPrice;

  /** 价税合计 */
  @ExcelProperty("价税合计")
  @DecimalString(message = "价税合计小数格式不正确", label = "价税合计")
  private String amount;

  /** 发货量 */
  @ExcelProperty("发货量")
  @IntegerString(message = "发货量数值格式不正确", label = "发货量")
  private String quantityReceived;

  /** 待发货量 */
  @ExcelProperty("待发货量")
  @IntegerString(
    message = "待发货量数值格式不正确",
    label = "待发货量",
    min = 0
  )
  private String quantityReceive;

  /** 退货量 */
  @ExcelProperty("退货量")
  @IntegerString(message = "退货量数值格式不正确", label = "退货量", min = 0)
  private String quantityReturn;

  /** 结束差异量 */
  @ExcelProperty("结束差异量")
  @IntegerString(
    message = "结束差异量数值格式不正确",
    label = "结束差异量",
    min = 0
  )
  private String endDifferenceQuantity;

  /** 预计发货时间 */
  @ExcelProperty("预计发货时间")
  @DateTimeString(message = "预计发货时间不是有效的时间日期格式")
  private String expectArriveTime;

  /** 到货日期 */
  @ExcelProperty("到货日期")
  @DateString(message = "到货日期不是有效的日期格式")
  private String arrivalDate;

  /** 采购单位 */
  @ExcelProperty("采购单位")
  @Size(max = 50, message = "采购单位长度不能超过50")
  private String applicationUnit;

  /** 库存单位 */
  @ExcelProperty("库存单位")
  @Size(max = 50, message = "库存单位长度不能超过50")
  private String inventoryUnit;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 50, message = "备注长度不能超过50")
  private String remarks;
}
